{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Nonlinear SVM Example\n",
    "\n",
    "This function wll illustrate how to implement the gaussian kernel on the iris dataset.\n",
    "\n",
    "Gaussian Kernel:\n",
    "\n",
    "$$K(x_{1}, x_{2}) = exp\\left(-\\gamma * (x_{1} - x_{2})^{2}\\right)$$\n",
    "\n",
    "We start by loading the necessary libraries and resetting the computational graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from sklearn import datasets\n",
    "from tensorflow.python.framework import ops\n",
    "ops.reset_default_graph()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Create a graph session"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Load the Iris Data\n",
    "\n",
    "Our x values will be (x1, x2) where x1 = 'Sepal Length', and x2 = 'Petal Width'\n",
    "\n",
    "The Target values will be wether or not the flower species is Iris Setosa."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Load the data\n",
    "# iris.data = [(Sepal Length, Sepal Width, Petal Length, Petal Width)]\n",
    "iris = datasets.load_iris()\n",
    "x_vals = np.array([[x[0], x[3]] for x in iris.data])\n",
    "y_vals = np.array([1 if y==0 else -1 for y in iris.target])\n",
    "class1_x = [x[0] for i,x in enumerate(x_vals) if y_vals[i]==1]\n",
    "class1_y = [x[1] for i,x in enumerate(x_vals) if y_vals[i]==1]\n",
    "class2_x = [x[0] for i,x in enumerate(x_vals) if y_vals[i]==-1]\n",
    "class2_y = [x[1] for i,x in enumerate(x_vals) if y_vals[i]==-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Model Parameters\n",
    "\n",
    "We now declare our batch size, placeholders, and the fitted b-value for the SVM kernel.  Note that we will create a separate placeholder to feed in the prediction grid for plotting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Declare batch size\n",
    "batch_size = 150\n",
    "\n",
    "# Initialize placeholders\n",
    "x_data = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "y_target = tf.placeholder(shape=[None, 1], dtype=tf.float32)\n",
    "prediction_grid = tf.placeholder(shape=[None, 2], dtype=tf.float32)\n",
    "\n",
    "# Create variables for svm\n",
    "b = tf.Variable(tf.random_normal(shape=[1,batch_size]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Gaussian (RBF) Kernel\n",
    "\n",
    "We create the gaussian kernel that is used to transform the data points into a higher dimensional space.\n",
    "\n",
    "The Kernel of two points, $x$ and $x'$ is given as\n",
    "\n",
    "$$K(x, x')=exp\\left(-\\gamma|| x-x' ||^{2}\\right)$$\n",
    "\n",
    "For $\\gamma$ very small, the kernel is very wide, and vice-versa for large $\\gamma$ values.  This means that large $\\gamma$ leads to high bias and low variance models.\n",
    "\n",
    "If we have a vector of points, $x$ of size (batch_size, 2), then our kernel calculation becomes\n",
    "\n",
    "$$K(\\textbf{x})=exp\\left( -\\gamma \\textbf{x} \\cdot \\textbf{x}^{T} \\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Gaussian (RBF) kernel\n",
    "gamma = tf.constant(-50.0)\n",
    "sq_vec = tf.multiply(2., tf.matmul(x_data, tf.transpose(x_data)))\n",
    "my_kernel = tf.exp(tf.multiply(gamma, tf.abs(sq_vec)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Compute SVM Model\n",
    "\n",
    "Here, the SVM loss is given by two terms, The first term is the sum of the $b$ matrix, and the second term is \n",
    "\n",
    "$$\\sum\\left(K\\cdot||\\textbf{b}||^{2}||\\textbf{y}||^{2}\\right)$$\n",
    "\n",
    "We finally tell TensorFlow to maximize the loss by minimizing the negative:  (The following is a horribly abbreviated version of the dual problem)\n",
    "\n",
    "$$-\\left(\\sum\\textbf{b} - \\sum\\left(K\\cdot||\\textbf{b}||^{2}||\\textbf{y}||^{2}\\right)\\right)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Compute SVM Model\n",
    "first_term = tf.reduce_sum(b)\n",
    "b_vec_cross = tf.matmul(tf.transpose(b), b)\n",
    "y_target_cross = tf.matmul(y_target, tf.transpose(y_target))\n",
    "second_term = tf.reduce_sum(tf.multiply(my_kernel, tf.multiply(b_vec_cross, y_target_cross)))\n",
    "loss = tf.negative(tf.subtract(first_term, second_term))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Define the Prediction Kernel\n",
    "\n",
    "Now we do the exact same thing as above for the prediction points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Gaussian (RBF) prediction kernel\n",
    "rA = tf.reshape(tf.reduce_sum(tf.square(x_data), 1),[-1,1])\n",
    "rB = tf.reshape(tf.reduce_sum(tf.square(prediction_grid), 1),[-1,1])\n",
    "pred_sq_dist = tf.add(tf.subtract(rA, tf.multiply(2., tf.matmul(x_data, tf.transpose(prediction_grid)))), tf.transpose(rB))\n",
    "pred_kernel = tf.exp(tf.multiply(gamma, tf.abs(pred_sq_dist)))\n",
    "\n",
    "prediction_output = tf.matmul(tf.multiply(tf.transpose(y_target),b), pred_kernel)\n",
    "prediction = tf.sign(prediction_output-tf.reduce_mean(prediction_output))\n",
    "accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.squeeze(prediction), tf.squeeze(y_target)), tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Optimizing Method\n",
    "\n",
    "We declare our gradient descent optimizer and intialize our model variables (`b`)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Declare optimizer\n",
    "my_opt = tf.train.GradientDescentOptimizer(0.01)\n",
    "train_step = my_opt.minimize(loss)\n",
    "\n",
    "# Initialize variables\n",
    "init = tf.global_variables_initializer()\n",
    "sess.run(init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Run the Classification!\n",
    "\n",
    "We iterate through the training for 300 iterations. We will output the loss every 75 iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Step #75\n",
      "Loss = -94.3925\n",
      "Step #150\n",
      "Loss = -206.892\n",
      "Step #225\n",
      "Loss = -319.392\n",
      "Step #300\n",
      "Loss = -431.892\n"
     ]
    }
   ],
   "source": [
    "# Training loop\n",
    "loss_vec = []\n",
    "batch_accuracy = []\n",
    "for i in range(300):\n",
    "    rand_index = np.random.choice(len(x_vals), size=batch_size)\n",
    "    rand_x = x_vals[rand_index]\n",
    "    rand_y = np.transpose([y_vals[rand_index]])\n",
    "    sess.run(train_step, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    \n",
    "    temp_loss = sess.run(loss, feed_dict={x_data: rand_x, y_target: rand_y})\n",
    "    loss_vec.append(temp_loss)\n",
    "    \n",
    "    acc_temp = sess.run(accuracy, feed_dict={x_data: rand_x,\n",
    "                                             y_target: rand_y,\n",
    "                                             prediction_grid:rand_x})\n",
    "    batch_accuracy.append(acc_temp)\n",
    "    \n",
    "    if (i+1)%75==0:\n",
    "        print('Step #' + str(i+1))\n",
    "        print('Loss = ' + str(temp_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Plotting Results\n",
    "\n",
    "We now create a fine mesh for plotting the SVM class lines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Create a mesh to plot points in\n",
    "x_min, x_max = x_vals[:, 0].min() - 1, x_vals[:, 0].max() + 1\n",
    "y_min, y_max = x_vals[:, 1].min() - 1, x_vals[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),\n",
    "                     np.arange(y_min, y_max, 0.02))\n",
    "grid_points = np.c_[xx.ravel(), yy.ravel()]\n",
    "[grid_predictions] = sess.run(prediction, feed_dict={x_data: rand_x,\n",
    "                                                   y_target: rand_y,\n",
    "                                                   prediction_grid: grid_points})\n",
    "grid_predictions = grid_predictions.reshape(xx.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4416574be0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n7LvvrmUoli5dytKlS5k2bRqlpaW8+uqrIcefPHkyubm5PPfccxxyyCEcddRR3jWOGzeO4cOHs3Ll\nSqZPnw7Axo0befjhhxk0aBA//OEP+X//7/9x7rneEtfs3LmTefPm8eMf/5jKykruuusukpKSuPzy\ny0lJSfH+hk888QQnn3wyCxcu5KSTTiI3N5cnn3ySo48+mr///e+sX7+e5ORkzjvvPN555x3GjBnD\nwIEDefnllxk+fDhr1qwhPz+fDRs28PrrrwNw4oknsm3bNtLT0xk/Prj8xLJly3jppZe8+h122GFM\nmTIFgLVr1/LZZ58xYsQIPvzwQw444AAee+wxhg8fzmmnncamTZuYM2cONTU19OnThzPOOIOFCxcy\nY8YMKioquP/++ykpKSEvL4+f/vSn3veyurqahx56iOLiYmbOnElubm6T379WRVXj9g/IBz6Ksu9F\nYKLv/avA2ChlLwTeBd7dZ5991NjzOeaYY/SAAw7Y7eMcfvjhCujnn3+uCxYsUEBvueUWBfSdd97x\nyr311lsK6KJFi7xtTz75pAJ66aWXKqD9+vXz9v373/9WQI888sgm61BXV6f9+vXTnj17KsEV0lRV\ndcqUKQ2u8eSTT1ZARcQr6/79/ve/915fcskl3uvZs2croOvWrdO//e1v3vY33nhDH3roIQV06tSp\n3nYRCTn+Pffco4sWLVJAp0+frv/617+8fSeccIICOmbMGAU0NTXVq+uXX36paWlpCujxxx+v48eP\nb3D8kSNH6tFHH62ADhkyRFVVjz322AbXWF5erqrqXYv/35o1a7xz3nnnnQrom2++qS+++KJX5vXX\nX9e3335bAb3uuutCPv/HP/5R58+fr4D+5je/Cdk3a9Ys7/WKFStURHTffffV5ORkzc/P10Ag4O3v\n3bu3Zmdn6/777+/V56CDDgq5lkAgoOvWrVNV1bPOOku7dOmi++23X8i9BPTVV1/VP/3pTyF1+elP\nf6qA3nbbbV693HFvuummBvcA0DvvvLPJ71+sAO9qDO32HpFoVtU5qjpWVcf27NnkU9pGnPnTn/7E\n6tWrI+77y1/+wr///e8mj1FcXMy3337rvX/jjTd45JFHgGDv7O677w4p/8knn/CnP/2pwXH+9a9/\nAVBRUUFxcTEQ7I0ClJeXe+W++uorAO+cFRUVXHvttQA8/fTTABQUFHDKKaewevVqrr76agC2bNkS\ncr67776b0047jddee40HH3yQxYsX88knn1BQUOCVTU1NBeDzzz+nsLAQgMWLFzNnzhw++OADTjjh\nBOrq6ti+fTv+77P/fsydO9d7/emnnwJBV7Rjx66JTdesWUNFRQUAS5Ys8e5TXV2d9y8rK4tPP/2U\na665hpSUFJ599lnOOecc8vPzOeaYY1i0aBEAtbW1QLCX6rj++usREfr27cvOnTvZuXOnV/e6ujqu\nvPJK1q5d69WvrKyMyspKli5dyumnn07Xrl29Y7nvS2FhIZmZmQwZMsTbt2LFCgoKCrj66qt54YUX\nvG3++1FWVubdy/fffz/kb/Liiy/yq1/9CoD33nvPu3/Dhg1j8eLFXrljjjmG5ORk1q1bh4h4bqKg\noIA333yTTZs2sWPHDj766CO+/vprNm/ezPvvv8+NN95IXV0dBQUFJCcnM23aNO644w4++OADSktL\n+eyzzwBYtGgRxx57LAMGDOCXv/wlmzdvJj09nX/+858h9+D3v/899957LxdccAF1dXVMmzaN//u/\n/2PLli1s27aN2bNnc/jhhzNkyBDvs21KLMrR0n807hQeJLhSlXv/KdCnqWMefPDBraacRvPZsWOH\nAnr11VdH3N+zZ0898cQTmzzOfvvtpykpKVpXV6eq6vWMamtrtWvXrgroli1bvPK//e1vFdDS0lJv\nW0lJife5ZcuW6a233qqAnnHGGQro4sWLvbJu3x/+8AdVVb355ps9d+CO8b3vfc8r47bl5OR4dXTX\nB2i3bt0U0KysLL3jjjsU0AsvvFABHT58uFZUVKiIaEZGhqqqjhs3TtPS0lRE9IYbbvCO53rwgJ56\n6qmalJTkve/evbsCOmHCBK/3fN9993n7r732Wn3sscdCeqM7duwIuc+jRo3S/Px8zzEcd9xxesAB\nB+g///lPfeCBB7zPnXjiiSEuR1U1Ly9PZ8yYoZMnT9aJEyfqoEGD9IwzzvD2++vi6rtkyRIF9Pnn\nn9dnnnlGDznkEAX0kUceUVXVs88+W/Pz83Xp0qV6zDHHKKDXX399gx7+T3/6U+9vBOizzz6rTzzx\nRMjf7MADD9SjjjrKK5OSkuLt8x8f0H333VdHjhyp8+bN0wsuuECfeOIJnTlzpj700EPe9fz617/W\n888/XwF99NFH9amnnlJAly9f7pV5+OGHtXfv3pqSkqIpKSmee3DnefDBB716T506Vfv166cff/yx\n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\njPWWAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f44104ea780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nxo259tpr2bp1a27GEBEJXbwVSAVgY7r7XwZjua5+/fqsWrWKvn37Mn78eCKRCNOmTQsjiohIKOKt\nQA7JzLqZWYqZpWzZsiVH11WiRAkGDRrEkiVLKF++PK1ataJt27Z8/fXXObpeEZG8IN4KZBNQKd39\nisHYf7n7aHdPdvfkcuUO+Y2M2aJGjRosWbKEQYMGMWPGDCKRCOPGjcPdc2X9IiJhiLcCWQqcZWan\nm1kxoD0wPeRMABQtWpS+ffuycuVKKleuTJcuXWjWrBmff56pb4YUEYk7cVUg7r4H6AHMBNYCk909\nLdxU/+ucc85h3rx5DB8+nPnz55OQkMCIESPYu3dv2NFERLJVXBUIgLu/5e5nu/tf3f2hsPMcSKFC\nhejRowdpaWnUq1ePm2++mQsuuIB169aFHU1EJNvEXYHEk1NPPZW3336bF154gWg0SrVq1fjnP//J\nb7/9FnY0EZEjpgLJYWZG586diUajXH755dx9993Url2bFStWhB1NROSIqEBySfny5ZkyZQpTp05l\n8+bN1KpVi759+7Jz586wo4mIZIkKJJe1atWKtWvX0qlTJwYPHky1atWYP39+2LFERA6bCiQEZcqU\n4bnnnmPmzJns2rWL+vXr06NHD7Zv3x52NBGRTFOBhKhx48akpqZyyy238NRTT5GYmMjMmTPDjiUi\nkikqkJAdc8wxPPHEE8yfP5+SJUvStGlTOnfuzPfffx92NBGRg1KB5BHnnXceK1asoF+/frz44otE\nIhFeeeUVXQ5FRPIsFUgeUqJECQYOHMjSpUupWLEibdu2pXXr1mzevDnsaCIif6ICyYOSkpJYvHgx\ngwcP5q233iISifD888/raERE8hQVSB5VpEgRevfuzerVq6lSpQrXXnstjRs35tNPPw07mogIoALJ\n884++2z+/e9/89RTT7Fo0SISExN58skn+f3338OOJiIFnAokDhQqVIju3buTlpZGgwYNuPXWW6lf\nvz7RaDTsaCJSgKlA4shf/vIX3nzzTSZMmMC6deuoXr06AwcO1MUZRSQUKpA4Y2ZcddVVrF27lpYt\nW3LvvfeSnJzMsmXLwo4mIgWMCiROnXjiiUyaNIlp06axZcsWateuTe/evfn111/DjiYiBYQKJM61\nbNmSaDTKtddey5AhQ6hWrRpz584NO5aIFAAqkHygdOnSjBkzhvfee489e/bQoEEDbrzxRrZt2xZ2\n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\nrqlApMA46aSTmDJlClOnTuXrr7+mdu3a9O3bl19//TXsaCJxSQUiBU6rVq2IRqN07tyZwYMHk5SU\nxPz588OOJRJ3VCBSIJUpU4axY8cya9Ysdu/eTf369enRowfbt28PO5pI3FCBSIHWqFEj1qxZw623\n3spTTz1FYmIi77zzTtixROKCCkQKvGOOOYbHH3+cDz/8kKOPPppmzZrRuXNnvv/++7CjieRpKhCR\nQN26dVmxYgX33HMPL774IpFIhClTpuhyKCIZUIGIpFO8eHEGDBhASkoKlSpVol27drRq1YrNmzeH\nHU0kz1GBiBxAtWrVWLRoEUOGDOGdd96hcuXKPPfcczoaEUlHBSKSgSJFinDXXXexatUqqlWrRteu\nXWncuDGffvpp2NFE8gQViMghnH322cyZM4enn36axYsXk5iYyBNPPMHvv/8edjSRUKlARDKhUKFC\n3HDDDaSlpdGgQQNuu+026tWrRzQaDTuaSGhUICKHoVKlSrz55pv861//Yv369VSvXp0BAwawe/fu\nsKOJ5DoViMhhMjM6duxINBqlVatW3HfffdSqVYuUlJSwo4nkqkwViJn91cyKB7cvNLNbzKx0zkYT\nydtOPPFEXnrpJV5//XW+++476tSpQ69evXRxRikwMnsEMhX43czOBEYDlYAXcyyVSBxp3rw5aWlp\ndO3alUceeYSqVavywQcfhB1LJMdltkD2uvse4B/AcHe/Czg5qys1s0fM7D9mttrMpqU/mjGzvma2\nwczWmVmTdONNg7ENZtYnq+sWyQmlS5dm9OjRzJ49m71793LhhRfSvXt3tm3bFnY0kRyT2QL5zcw6\nAJ2BN4Kxokew3llAortXBT4C+gKYWQRoDyQATYGnzKywmRUGRgLNgAjQIVhWJE9p2LAhq1ev5o47\n7mD06NEkJCTw5ptvhh1LJEdktkCuAeoCD7n7p2Z2OjAhqyt193eDIxqARUDF4HYL4GV33+XunwIb\ngNrBtMHdP3H33cDLwbIiec7RRx/N0KFDWbBgAaVKleKyyy7jqquu4rvvvgs7mki2ylSBuHvU3W9x\n95fMrAxwrLs/nE0ZrgXeDm5XADamm/dlMJbR+J+YWTczSzGzlC1btmRTRJHDV6dOHZYvX87999/P\n5MmTqVy5Mi+//LIuhyL5RmbfhfVvMytlZscDy4ExZjbsEI95z8xSDzC1SLdMP2APMPFINiI9dx/t\n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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f43e574ab38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Plot points and grid\n",
    "plt.contourf(xx, yy, grid_predictions, cmap=plt.cm.Paired, alpha=0.8)\n",
    "plt.plot(class1_x, class1_y, 'ro', label='I. setosa')\n",
    "plt.plot(class2_x, class2_y, 'kx', label='Non setosa')\n",
    "plt.title('Gaussian SVM Results on Iris Data')\n",
    "plt.xlabel('Pedal Length')\n",
    "plt.ylabel('Sepal Width')\n",
    "plt.legend(loc='lower right')\n",
    "plt.ylim([-0.5, 3.0])\n",
    "plt.xlim([3.5, 8.5])\n",
    "plt.show()\n",
    "\n",
    "# Plot batch accuracy\n",
    "plt.plot(batch_accuracy, 'k-', label='Accuracy')\n",
    "plt.title('Batch Accuracy')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()\n",
    "\n",
    "# Plot loss over time\n",
    "plt.plot(loss_vec, 'k-')\n",
    "plt.title('Loss per Generation')\n",
    "plt.xlabel('Generation')\n",
    "plt.ylabel('Loss')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Evaluate Test Points\n",
    "\n",
    "We create a set of test points, and evaluate the class predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "x_test_seq = np.array([4., 5., 6., 7.])\n",
    "y_test_seq = np.array([0., 1., 2.])\n",
    "\n",
    "x_test, y_test = np.meshgrid(x_test_seq,y_test_seq)\n",
    "test_points = np.c_[x_test.ravel(), y_test.ravel()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4.,  0.],\n",
       "       [ 5.,  0.],\n",
       "       [ 6.,  0.],\n",
       "       [ 7.,  0.],\n",
       "       [ 4.,  1.],\n",
       "       [ 5.,  1.],\n",
       "       [ 6.,  1.],\n",
       "       [ 7.,  1.],\n",
       "       [ 4.,  2.],\n",
       "       [ 5.,  2.],\n",
       "       [ 6.,  2.],\n",
       "       [ 7.,  2.]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_points"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Now we can evaluate the predictions on our test points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "[test_predictions] = sess.run(prediction, feed_dict={x_data: rand_x,\n",
    "                                                     y_target: rand_y,\n",
    "                                                     prediction_grid: test_points})\n",
    "test_predictions = test_predictions.reshape(x_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  1.,  1.,  1.,  1., -1.,  1.,  1.,  1.,  1.,  1., -1.], dtype=float32)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_predictions.ravel()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Format the test points together with the predictions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Point [ 4.  0.] is predicted to be in class 1.0\n",
      "Point [ 5.  0.] is predicted to be in class 1.0\n",
      "Point [ 6.  0.] is predicted to be in class 1.0\n",
      "Point [ 7.  0.] is predicted to be in class 1.0\n",
      "Point [ 4.  1.] is predicted to be in class 1.0\n",
      "Point [ 5.  1.] is predicted to be in class -1.0\n",
      "Point [ 6.  1.] is predicted to be in class 1.0\n",
      "Point [ 7.  1.] is predicted to be in class 1.0\n",
      "Point [ 4.  2.] is predicted to be in class 1.0\n",
      "Point [ 5.  2.] is predicted to be in class 1.0\n",
      "Point [ 6.  2.] is predicted to be in class 1.0\n",
      "Point [ 7.  2.] is predicted to be in class -1.0\n"
     ]
    }
   ],
   "source": [
    "for ix, point in enumerate(test_points):\n",
    "    point_pred = test_predictions.ravel()[ix]\n",
    "    print('Point {} is predicted to be in class {}'.format(point, point_pred))"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
